Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / tests / test_android_push_bridge.py

Displaying Raw • Download


tests/test_android_push_bridge.py v4.7.0-rc.5 (c820bd45) Text, 10.74 KB

T8b949e# SPDX-License-Identifier: 0BSD

Tff7b72import T7ee787json

Tff7b72import T7ee787pytest

Tff7b72import T7ee787meshchatxT7ee787.T7ee787android_push_bridge Tff7b72as T7ee787android_push_bridge
Tff7b72from T7ee787meshchatxT7ee787.T7ee787android_push_bridge Tff7b72import Tb4b4b4(
Te6edf3install_websocket_hookTb4b4b4,
Te6edf3lxmf_delivery_notification_textTb4b4b4,
Tb4b4b4)


Tf0883e@pytestTff7b72.Td2a8fffixtureTb4b4b4(Te6edf3autouseTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72def Td2a8ffreset_ws_hook_flagTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3android_push_bridgeTff7b72.Td2a8ff_ws_hook_installed Tff7b72= Tff7b72False
Tff7b72yield
Te6edf3android_push_bridgeTff7b72.Td2a8ff_ws_hook_installed Tff7b72= Tff7b72False


Tff7b72def Td2a8fftest_lxmf_delivery_skips_wrong_typeTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4}Tb4b4b4) Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_lxmf_delivery_skips_when_sieve_suppressesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsieve_suppress_notificationsTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffAliceTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffHiTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_skips_outboundTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBobTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffHiTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBodyTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_skips_telemetry_onlyTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffPeerTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fftelemetryTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6fflatTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_incoming_title_and_bodyTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCharlieTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffSubjectTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffHello thereTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffCharlieTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffSubjectTffea00\nTa5d6ffHello thereTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_truncates_long_contentTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3long_body Tff7b72= Ta5d6ff"Ta5d6ffxTa5d6ff" Tff7b72* T79c0ff250
Te6edf3titleTb4b4b4, Te6edf3body Tff7b72= Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffDanaTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Te6edf3long_bodyTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3title Tff7b72== Ta5d6ff"Ta5d6ffDanaTa5d6ff"
Tff7b72assert Te6edf3bodyTff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6ff...Ta5d6ff"Tb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3bodyTb4b4b4) Tff7b72== T79c0ff200


Tff7b72def Td2a8fftest_lxmf_delivery_reactionTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffEveTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffis_reactionTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffreaction_emojiTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffthumbsupTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffEveTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffReaction thumbsupTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_default_senderTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3tTb4b4b4, Te6edf3b Tff7b72= Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffOnly titleTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3t Tff7b72== Ta5d6ff"Ta5d6ffMeshTa5d6ff"
Tff7b72assert Te6edf3b Tff7b72== Ta5d6ff"Ta5d6ffOnly titleTa5d6ff"


Tff7b72def Td2a8fftest_lxmf_delivery_image_fields_onlyTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffFranTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffimageTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffimage_typeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpngTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffimage_sizeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffFranTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffImage messageTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_audio_fields_onlyTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffGusTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffaudioTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffaudio_modeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4, Ta5d6ff"Ta5d6ffaudio_sizeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffGusTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAudio messageTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_attachment_fields_onlyTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffHalTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fffieldsTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6fffile_attachmentsTa5d6ff"Tb4b4b4: Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6fffile_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffa.binTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fffile_sizeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4]
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4) Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffHalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffAttachmentTa5d6ff"Tb4b4b4)


Tff7b72def Td2a8fftest_lxmf_delivery_skips_non_dict_messageTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Tb4b4b4(
Te6edf3lxmf_delivery_notification_textTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffIanTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffnot-a-dictTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)
Tff7b72is Tff7b72None
Tb4b4b4)


Tff7b72def Td2a8fftest_after_websocket_broadcast_ignores_non_stringTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(T79c0ff123Tb4b4b4)
Tff7b72assert Te6edf3calls Tff7b72== Tb4b4b4[Tb4b4b4]


Tff7b72def Td2a8fftest_after_websocket_broadcast_ignores_invalid_jsonTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(Ta5d6ff"Ta5d6ff{Ta5d6ffnot jsonTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3calls Tff7b72== Tb4b4b4[Tb4b4b4]


Tff7b72def Td2a8fftest_after_websocket_broadcast_skips_when_notification_text_noneTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4}Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3calls Tff7b72== Tb4b4b4[Tb4b4b4]


Tff7b72def Td2a8fftest_after_websocket_broadcast_incoming_callTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3inc Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3cancel Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_incoming_call_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3incTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)
Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3android_push_bridgeTb4b4b4,
Ta5d6ff"Ta5d6ff_cancel_incoming_call_notification_javaTa5d6ff"Tb4b4b4,
Tff7b72lambdaTb4b4b4: Te6edf3cancelTff7b72.Td2a8ffappendTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftelephone_ringingTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaabbccddTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffZedTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3inc Tff7b72== Tb4b4b4[Tb4b4b4(Ta5d6ff"Ta5d6ffZedTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffaabbccddTa5d6ff"Tb4b4b4)Tb4b4b4]
Tff7b72assert Te6edf3cancel Tff7b72== Tb4b4b4[Tb4b4b4]


Tff7b72def Td2a8fftest_after_websocket_broadcast_call_ended_cancelsTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3cancel Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3android_push_bridgeTb4b4b4,
Ta5d6ff"Ta5d6ff_cancel_incoming_call_notification_javaTa5d6ff"Tb4b4b4,
Tff7b72lambdaTb4b4b4: Te6edf3cancelTff7b72.Td2a8ffappendTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftelephone_call_endedTa5d6ff"Tb4b4b4}Tb4b4b4)
Tb4b4b4)
Tff7b72assert Te6edf3calls Tff7b72== Tb4b4b4[Tb4b4b4]
Tff7b72assert Te6edf3cancel Tff7b72== Tb4b4b4[T79c0ff1Tb4b4b4]


Tff7b72def Td2a8fftest_after_websocket_broadcast_missed_callTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3miss Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(
Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_missed_call_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3missTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)
Tb4b4b4)
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(
Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(
Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftelephone_missed_callTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff00112233Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffMaraTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3missTb4b4b4) Tff7b72== T79c0ff1
Tff7b72assert Te6edf3missTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffMissed callTa5d6ff"
Tff7b72assert Ta5d6ff"Ta5d6ffMaraTa5d6ff" Tff7b72in Te6edf3missTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]
Tff7b72assert Te6edf3missTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff2Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff00112233Ta5d6ff"


Tff7b72def Td2a8fftest_after_websocket_broadcast_notifies_with_dedupeTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3payload Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffJulesTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffHiTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffThereTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffabcdef0123456789Ta5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3callsTb4b4b4) Tff7b72== T79c0ff1
Tff7b72assert Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffJulesTa5d6ff"
Tff7b72assert Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffHiTffea00\nTa5d6ffThereTa5d6ff"
Tff7b72assert Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff2Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffabcdef0123456789Ta5d6ff"


Tff7b72def Td2a8fftest_after_websocket_broadcast_short_hash_skips_dedupeTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)
Te6edf3payload Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffKimTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{
Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffTTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffhashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffshortTa5d6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Te6edf3android_push_bridgeTff7b72.Td2a8ff_after_websocket_broadcastTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff2Tb4b4b4] Tff7b72is Tff7b72None


Tff7b72def Td2a8fftest_install_skips_when_not_chaquopy_androidTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_is_chaquopy_androidTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72FalseTb4b4b4)

Tff7b72class T56d364RmcTb4b4b4:
Tff7b72async Tff7b72def Td2a8ffwebsocket_broadcastTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3data

Te6edf3original Tff7b72= Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast
Te6edf3install_websocket_hookTb4b4b4(Te6edf3RmcTb4b4b4)
Tff7b72assert Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast Tff7b72is Te6edf3original


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_install_wraps_broadcast_and_notifiesTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_is_chaquopy_androidTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3calls Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Te6edf3callsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)Tb4b4b4)

Tff7b72class T56d364RmcTb4b4b4:
Tff7b72async Tff7b72def Td2a8ffwebsocket_broadcastTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72return Ta5d6ff"Ta5d6ffokTa5d6ff"

Te6edf3unwrapped Tff7b72= Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast
Te6edf3install_websocket_hookTb4b4b4(Te6edf3RmcTb4b4b4)
Te6edf3payload Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflxmf.deliveryTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffremote_identity_nameTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffLeeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fflxmf_messageTa5d6ff"Tb4b4b4: Tb4b4b4{Ta5d6ff"Ta5d6ffis_incomingTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6fftitleTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffATa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffcontentTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffBTa5d6ff"Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Te6edf3result Tff7b72= Tff7b72await Te6edf3RmcTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwebsocket_broadcastTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffokTa5d6ff"
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3callsTb4b4b4) Tff7b72== T79c0ff1
Tff7b72assert Te6edf3callsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Tb4b4b4:T79c0ff2Tb4b4b4] Tff7b72== Tb4b4b4(Ta5d6ff"Ta5d6ffLeeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffATffea00\nTa5d6ffBTa5d6ff"Tb4b4b4)
Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast Tff7b72= Te6edf3unwrapped


Tf0883e@pytestTff7b72.Td2a8ffmarkTff7b72.Td2a8ffasyncio
Tff7b72async Tff7b72def Td2a8fftest_install_is_idempotentTb4b4b4(Te6edf3monkeypatchTb4b4b4)Tb4b4b4:
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_is_chaquopy_androidTa5d6ff"Tb4b4b4, Tff7b72lambdaTb4b4b4: Tff7b72TrueTb4b4b4)
Te6edf3invocations Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72class T56d364RmcTb4b4b4:
Tff7b72async Tff7b72def Td2a8ffwebsocket_broadcastTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
Te6edf3invocationsTff7b72.Td2a8ffappendTb4b4b4(Ta5d6ff"Ta5d6fforigTa5d6ff"Tb4b4b4)
Tff7b72return Tff7b72None

Te6edf3unwrapped Tff7b72= Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast
Te6edf3install_websocket_hookTb4b4b4(Te6edf3RmcTb4b4b4)
Te6edf3install_websocket_hookTb4b4b4(Te6edf3RmcTb4b4b4)
Te6edf3monkeypatchTff7b72.Td2a8ffsetattrTb4b4b4(Te6edf3android_push_bridgeTb4b4b4, Ta5d6ff"Ta5d6ff_notify_javaTa5d6ff"Tb4b4b4, Tff7b72lambda Tff7b72*Te6edf3aTb4b4b4: Tff7b72NoneTb4b4b4)
Tff7b72await Te6edf3RmcTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwebsocket_broadcastTb4b4b4(Te6edf3jsonTff7b72.Td2a8ffdumpsTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffconfigTa5d6ff"Tb4b4b4}Tb4b4b4)Tb4b4b4)
Tff7b72assert Te6edf3invocations Tff7b72== Tb4b4b4[Ta5d6ff"Ta5d6fforigTa5d6ff"Tb4b4b4]
Te6edf3RmcTff7b72.Td2a8ffwebsocket_broadcast Tff7b72= Te6edf3unwrapped


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────